/**
 * \file device
 * \author Davide Gessa
 * \date 01-01-10
 */
#ifndef DEVICE_H
#define DEVICE_H

#include <types.h>
#include <config.h>

/**
 * Device
 */
typedef struct device_p
{
	// Device pci?
	//#ifdef DPCI
		char vendor[32];			///< Nome del costruttore
		char vendor_full[32];		///< Nome intero del costruttore
		char vendor_id;				///< Id del costruttore
		
		char device[32];			///< Nome del device
		char device_id;				///< Id del device
		char device_desc[32];		///< Descrizione del device
		
		char class_id;				///< Classe base id
		char class_id_sub;			///< Sotto classe id
		char class[32];				///< Nome classe
		char class_desc[32];		///< Descrizione classe
		char class_prog_desc[32];	///< Descrizione avanzata classe
		
		uint8_t slot;				///< Slot del device
		uint8_t bus;				///< Bus del device
		
		uint8_t interrupt;			///< Linea di interrupt del device
		uint32_t base_addresses[6];	///< Indirizzi base del device
	//#endif

	char file[32];				///< File assocciato al device
			
	struct device_p *next;
} device_t;



device_t *device_list;				///< Lista dei device

void device_update();
uint32_t device_getx(uint32_t, device_t **);



#endif
